/**
 * 处理用户接口的业务逻辑
 */
const { createUser, getUserInfo, getUserList } = require('../service/user')

class UserController {
  // 用户注册
  async register(ctx, next) {
    // 获取数据
    const { name, password, phone, email } = ctx.request.body
    try {
      // 如果数据不合法
      if (!name || !password) {
        // ctx.status = 400
        ctx.body = {
          code: 404,
          msg: '用户名或密码不能为空'
        }
        return
      }

      // 用户名唯一（查询数据库后才知道）
      if (await getUserInfo({ name })) {
        // ctx.status = 409
        ctx.body = {
          code: 404,
          msg: '用户名已存在'
        }
        return
      }

      // 创建用户
      const res = await createUser(name, password, phone, email)
      // 操作数据库成功后返回值
      // console.log(res);
      ctx.body = {
        code: 200,
        msg: '用户注册成功',
        data: res
      }
    }
    catch (error) {
      ctx.body = {
        code: 500,
        msg: '注册失败',
        error: error.message
      };
    }
  }

  // 用户登录
  async login(ctx, next) {
    const { name, password } = ctx.request.body
    try {
      if (!name || !password) {
        // ctx.status = 400
        ctx.body = {
          code: 404,
          msg: '用户名或密码不能为空'
        }
        return
      }

      const res = await getUserInfo({ name })
      if (!res) {
        // ctx.status = 400
        ctx.body = {
          code: 404,
          msg: '用户不存在'
        }
        return
      }

      if (res.name === name) {
        if (res.password !== password) {
          // ctx.status = 400
          ctx.body = {
            code: 404,
            msg: '密码错误'
          }
          return
        }
        else {
          ctx.body = {
            code: 200,
            msg: '用户登录成功',
            data: res
          }
        }
      }
    }
    catch (error) {
      ctx.body = {
        code: 500,
        msg: '登录失败',
        error: error.message
      };
    }
  }

  // 获取用户列表
  async list(ctx, next) {
    try {
      const res = await getUserList()
      ctx.body = {
        code: 200,
        msg: '获取用户列表成功',
        data: res
      }
    }
    catch (error) {
      ctx.body = {
        code: 500,
        msg: '获取用户列表失败',
        error: error.message
      };
    }
  }

}

module.exports = new UserController()
